import axios from 'axios'
import { ElMessage } from 'element-plus'
import { getToken } from '@/utils/token'
import useStore from '@/store'
import router from '@/router'


// console.log('BASE_URL', import.meta.env.VITE_APP_BASE_URL)

const instance = axios.create({
<<<<<<< HEAD
    baseURL: import.meta.env.VITE_APP_BASE_URL,
=======
    baseURL: import.meta.env.VITE_APP_BASE_URL || '/api',
>>>>>>> resume
    timeout: 10000  // 增加超时时间到10秒
})

instance.interceptors.request.use(function (config) {
    const token = getToken()
    if (token) {
        config.headers['token'] = token
    }
    return config
}, function (error) {
    return Promise.reject(error)
});

instance.interceptors.response.use(function (response) {
    const data = response.data
<<<<<<< HEAD
    if (data.code == 0) {
        return Promise.resolve(data)
    } else {
        ElMessage.error(data.msg)
=======
    // 兼容不同后端返回格式：code 为 0 或 200 视为成功
    if (data && (data.code === 0 || data.code === 200)) {
        return Promise.resolve(data)
    } else {
        // 检查是否为未登录错误
        if (data && data.code === 1 && (data.msg === '未登录' || data.message === '未登录')) {
            ElMessage.error('请先登录')
            const store = useStore()
            store.app.updateToken('')
            router.replace({ name: 'Login' })
            return Promise.reject(data)
        }
        
        // 仅当存在有效错误消息时才弹出提示，避免空白弹窗
        if (data && (data.msg || data.message)) {
            ElMessage.error(data.msg || data.message)
        }
>>>>>>> resume
        return Promise.reject(data)
    }
}, function (error) {
    console.log('error', error);
    const response = error.request.response
    if (response) {
        const errorData = JSON.parse(response)

        if (errorData.message || errorData.msg) {
            ElMessage.error(errorData.message || errorData.msg)
        }
        //系统强制退出(token失效，已经登出)
        if (errorData.code === 999) {
            const store = useStore()
            store.app.updateToken('')
            router.replace({ name: 'Login' })
        }
    } else {
        ElMessage.error('网络连接超时')
    }

    return Promise.reject(error)
})

export default instance